<!-- HTML header for doxygen 1.9.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CMSIS-Core (Cortex-A): CMSIS-Core Device Templates</title>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="tabs.js"></script>
<script type="text/javascript" src="footer.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
<link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
<link href="extra_search.css" rel="stylesheet" type="text/css"/>
<link href="extra_tabs.css" rel="stylesheet" type="text/css"/>
<link href="version.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../version.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 55px;">
  <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
  <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
   <div id="projectname">CMSIS-Core (Cortex-A)
   &#160;<span id="projectnumber"><script type="text/javascript">
     <!--
     writeHeader.call(this);
     writeVersionDropdown.call(this, "CMSIS-Core (Cortex-A)");
     //-->
    </script>
   </span>
   </div>
   <div id="projectbrief">CMSIS-Core support for Cortex-A processor-based devices</div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
  <!--END !PROJECT_NAME-->
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
  <ul class="tablist">
    <script type="text/javascript">
      writeComponentTabs.call(this);
    </script>
  </ul>
</div>
<script type="text/javascript">
  writeSubComponentTabs.call(this);
</script>
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('templates_pg.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div><div class="header">
  <div class="headertitle"><div class="title">CMSIS-Core Device Templates </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a class="anchor" id="md_src_template"></a> Arm supplies CMSIS-Core device template files for the all supported Cortex-A processors and various compiler vendors. Refer to the list of <a class="el" href="index.html#tested_tools_sec">Tested and Verified Toolchains</a> for compliance.</p>
<p>These CMSIS-Core device template files include the following:</p><ul>
<li>Register names of the Core Peripherals and names of the Core Exception Vectors.</li>
<li>Functions to access core peripherals, cache, MMU and special CPU instructions</li>
<li>Generic startup code and system configuration code.</li>
</ul>
<h1><a class="anchor" id="CMSIS_Processor_files"></a>
CMSIS-Core Processor Files</h1>
<p>The CMSIS-Core processor files provided by Arm are in the directory .\CMSIS\Core\Include. These header files define all processor specific attributes do not need any modifications.</p>
<p>The <code>core_&lt;cpu&gt;.h</code> defines the core peripherals and provides helper functions that access the core registers.</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadLeft">Header File   </th><th class="markdownTableHeadLeft">Target Processor Core    </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft">📂 CMSIS/Core/Include   </td><td class="markdownTableBodyLeft">CMSIS-Core include folder (<a href="https://github.com/ARM-software/CMSIS_6/tree/main/CMSIS/Core/Include/">See on GitHub</a>)    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft">┗ 📄 <a class="el" href="core__ca_8h.html">core_ca.h</a>   </td><td class="markdownTableBodyLeft">Generics for all supported Cortex-A processors   </td></tr>
</table>
<h1><a class="anchor" id="device_examples"></a>
Device Examples</h1>
<p>The <a href="https://github.com/ARM-software/Cortex_DFP">Cortex_DFP pack</a> provides generic device definitions for supported Arm Cortex-A cores and contains corresponding CMSIS-Core device files.</p>
<h1><a class="anchor" id="template_files_sec"></a>
Template Files</h1>
<p>To simplify the creation of CMSIS-Core device files, the following template files are provided that should be extended by the silicon vendor to reflect the actual device and device peripherals. Silicon vendors add to these template files the following information:</p><ul>
<li><b>Device Peripheral Access Layer</b> that provides definitions for device-specific peripherals.</li>
<li><b>Access Functions for Peripherals</b> (optional) that provides additional helper functions to access device-specific peripherals.</li>
<li><b>Interrupt vectors</b> in the startup file that are device specific.</li>
</ul>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadLeft">Template File   </th><th class="markdownTableHeadLeft">Description    </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft">📂 CMSIS/Core/Template/Device_A   </td><td class="markdownTableBodyLeft">Folder with CMSIS-Core device file templates (<a href="https://github.com/ARM-software/CMSIS_6/tree/main/CMSIS/Core/Template/Device_A/">See on GitHub</a>)    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft">┣ 📂 Config   </td><td class="markdownTableBodyLeft">Template configuration files    </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft">&emsp;&#160; ┣ 📄 Device_ac6.sct   </td><td class="markdownTableBodyLeft">Linker scatter file template for Arm C/C++ Compiler    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft">&emsp;&#160; ┗ 📄 mem_Device.h   </td><td class="markdownTableBodyLeft"><a class="el" href="mem_h_pg.html">Memory Configuration Files mem_&lt;device&gt;.h</a> template    </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft">┣ 📂 Include   </td><td class="markdownTableBodyLeft">Template header files    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft">&emsp;&#160; ┣ 📄 Device.h   </td><td class="markdownTableBodyLeft"><a class="el" href="device_h_pg.html">Device Header File &lt;Device.h&gt;</a> template    </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft">&emsp;&#160; ┗ 📄 system_Device.h   </td><td class="markdownTableBodyLeft"><a class="el" href="system_c_pg.html#system_Device_h_sec">system_Device.h Template File</a>    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft">┗ 📂 Source   </td><td class="markdownTableBodyLeft">Template C files    </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft">&emsp;&#160; ┣ 📄 mmu_Device.c   </td><td class="markdownTableBodyLeft"><a class="el" href="mmu_c_pg.html">Memory Management Unit Files mmu_&lt;device&gt;.c</a> template    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft">&emsp;&#160; ┣ 📄 startup_Device.c   </td><td class="markdownTableBodyLeft"><a class="el" href="startup_c_pg.html">Startup File startup_&lt;Device&gt;.c</a> template    </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft">&emsp;&#160; ┗ 📄 system_Device.c   </td><td class="markdownTableBodyLeft"><a class="el" href="system_c_pg.html#system_Device_sec">system_Device.c Template File</a>   </td></tr>
</table>
<p><b>Adapt Template Files to a Device</b></p>
<p>The following steps describe how to adopt the template files to a specific device or device family. Copy the complete all files in the template directory and replace:</p><ul>
<li>directory name 'Vendor' with the abbreviation for the device vendor e.g.: NXP.</li>
<li>directory name 'Device' with the specific device name e.g.: LPC17xx.</li>
<li>in the file names 'Device' with the specific device name e.g.: LPC17xx.</li>
</ul>
<p>Each template file contains comments that start with <b>ToDo:</b> that describe a required modification. The template files contain place holders:</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadLeft">Placeholder   </th><th class="markdownTableHeadLeft">To be replaced with    </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft"><code>&lt;Device&gt;</code>   </td><td class="markdownTableBodyLeft">The specific device name or device family name, for example <code>LPC17xx</code>    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft"><code>&lt;DeviceInterrupt&gt;</code>   </td><td class="markdownTableBodyLeft">The specific interrupt name of the device, for example <code>TIM1</code> for Timer 1 interrupt    </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyLeft"><code>&lt;DeviceAbbreviation&gt;</code>   </td><td class="markdownTableBodyLeft">Short name or abbreviation of the device family, for example <code>LPC</code>    </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyLeft"><code>Cortex-A#</code>   </td><td class="markdownTableBodyLeft">The specific Cortex-A processor name, for example <code>Cortex-A9</code>   </td></tr>
</table>
<p>The device configuration of the template files is described in detail on the following pages:</p><ul>
<li><a class="el" href="startup_c_pg.html">Startup File startup_&lt;Device&gt;.c</a></li>
<li><a class="el" href="system_c_pg.html">System Configuration Files system_&lt;Device&gt;.c and system_&lt;Device&gt;.h</a></li>
<li><a class="el" href="device_h_pg.html">Device Header File &lt;Device.h&gt;</a></li>
<li><a class="el" href="mem_h_pg.html">Memory Configuration Files mem_&lt;device&gt;.h</a></li>
<li><a class="el" href="mmu_c_pg.html">Memory Management Unit Files mmu_&lt;device&gt;.c</a> </li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">
      <script type="text/javascript">
        <!--
        writeFooter.call(this);
        //-->
      </script> 
    </li>
  </ul>
</div>
</body>
</html>
